package intermouse;

/**
 * A pályán található elemek ősosztálya.
 * 
 * @author Sőre András
 * @author Bendefy Zoltán
 * 
 * @version 1.0
 * @since 2013-03-24
 */

public class FieldObject {
	
	/**
	 * Referencia az elem mezőjére.
	 */
	protected Field field;
	
	/**
	 * Ha igazra van állítva, akkor az objektum törlésre kerül a következő körben.
	 */
	protected boolean dead;
	
	FieldObject()
	{
		dead = false;
	}
	
	public Field getField() {
		System.out.println(">> FieldObject.getField() : Field");
		System.out.println("<< return");
		return field;
	}

	public void setField(Field field) {
		System.out.println(">> FieldObject.setField(Field) : void");
		field.addFieldObject(this);
		System.out.println("<< return");
		this.field = field;
	}
	
	/**
	 * Beállítja a dead kapcsolót.
	 */
	void setDead(boolean dead){
		System.out.println(">> FieldObject.setDead(boolean) : void");
		this.dead = dead;
		System.out.println("<< return");
	}
	
	/**
	 * Visszaadja, hogy az objektum halott-e.
	 */
	boolean getDead(){
		System.out.println(">> FieldObject.getDead() : boolean");
		System.out.println("<< return");
		return dead;
	}
	
	
	/**
	 * @return
	 * Mindig false-t ad vissza, a hangya felüldefiniálja mert az támadható.
	 */
	boolean attack(){
		System.out.println(">> FieldObject.attack() : bool");
		System.out.println("<< return");
		return false;
	}
	
	/**
	 * @param ant
	 * @return
	 * megadja a paraméterként kapott hangyának hogy a field mezőre léphet-e.
	 */
	boolean canStep(Ant ant){
		System.out.println(">> FieldObject.canStep(Ant) : bool");
		System.out.println("<< return");
		return true;
	}
	
	/**
	 * @param param
	 * @return
	 * megadja a paraméterként kapott hangyászsünnek hogy a field mezőre léphet-e.
	 */
	boolean canStep(AntEater antEater, int direction){
		System.out.println(">> FieldObject.canStep(AntEater, int) : bool");
		System.out.println("<< return");
		return true;
	}
	
	/**
	 * @param param
	 * @return
	 * megadja a paraméterként kapott kőnek hogy a field mezőre léphet-e.
	 */
	boolean canStep(Stone stone, boolean isFirst, int direction){
		System.out.println(">> FieldObject.canStep(Stone, boolean, int) : bool");
		System.out.println("<< return");
		return true;
	}
	
	/**
	 * @return
	 * megadja hogy az objektum étel-e, Foodokra igazat ad vissza.
	 */
	boolean isFood(){
		System.out.println(">> FieldObject.isFood() : bool");
		System.out.println("<< return");
		return false;
	}
}
